Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
D3D11 Replay support for Issue #2858
This is a PR in a sequence of PRs which all together complete the implementation of the feature.
Future PRs will cover replay support for D3D12, Vulkan and extending the automated overlay tests
GL_Overlay_Test
,D3D11_Overlay_Test
,D3D12_Overlay_Test
,VK_Overlay_Test
.The feature enables supporting shader exported depth for the Depth Test overlay by replaying the draw using the pixel shader from the capture instead of a replacement shader. Depth test passing pixels are identified by using the stencil buffer to generate a stencil mask.
If the depth buffer used for the draw does not have a stencil buffer then a new depth buffer is created with a depth+stencil format and a fullscreen pass is used to copy depth from the original depth buffer to the newly created depth+stencil buffer.
Changes to existing implementation
Tested on Windows using changes to
D3D11_Overlay_Test
The change makes the pixel shader write out depth 0.0 for a small rectangle just bottom-left of the centre
Before (using v1.29) : the rectangle of output depth 0.0 is shown as failing the depth test
Depth Buffer format
![image](https://private-user-images.githubusercontent.com/39392/280767057-e67f678a-9728-4ea6-876a-ac03c4a218a8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODU3MDcsIm5iZiI6MTczOTI4NTQwNywicGF0aCI6Ii8zOTM5Mi8yODA3NjcwNTctZTY3ZjY3OGEtOTcyOC00ZWE2LTg3NmEtYWMwM2M0YTIxOGE4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE0NTAwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY5MDFmNWRhYWMyNWVmNzRlOTYyOTE1YzE3YzFmYjQ4YTg3NjEwNmFhMDk2ZjAyMGQ2ZGMzYTJkZDQ5NjIxMzkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.2PbQDiWz5V2MSd9QQnOAibDzjIDsRy0rz8wnc9gxZPo)
![image](https://private-user-images.githubusercontent.com/39392/280767227-7bab3887-31ce-41e2-b9ff-d8026df8837f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODU3MDcsIm5iZiI6MTczOTI4NTQwNywicGF0aCI6Ii8zOTM5Mi8yODA3NjcyMjctN2JhYjM4ODctMzFjZS00MWUyLWI5ZmYtZDgwMjZkZjg4MzdmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE0NTAwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRmMWM1YWQ3YTIxZjg4ZWZmMjE1NTIxNjAzZmNiZWMwZDkwMjE4YjMwZjZjNTgzZTkwMTMwNTUyMjZmNTBjZjgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.yaxKawjs04YaEMjwz1vbxf5MYysSVmiAm6j5vBVi9o8)
![image](https://private-user-images.githubusercontent.com/39392/280767384-6f61b872-19c2-4aae-8883-ca2e3d401ee6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODU3MDcsIm5iZiI6MTczOTI4NTQwNywicGF0aCI6Ii8zOTM5Mi8yODA3NjczODQtNmY2MWI4NzItMTljMi00YWFlLTg4ODMtY2EyZTNkNDAxZWU2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE0NTAwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTYyYzU1OTMxZDEyOWExMTljOTNkMDU4NGE2YWRhMDQ0NjkwY2YxMGRiNjVkMTk0MTBjNTg1YjIyNmQ5NWU3ZGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.CGJP9N8lM3ipbY2Q3PF3YSwTK_jg_BnARjS7bjG8xII)
![image](https://private-user-images.githubusercontent.com/39392/280767522-bff2ded8-a7c4-4237-8032-c3b62701e94b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODU3MDcsIm5iZiI6MTczOTI4NTQwNywicGF0aCI6Ii8zOTM5Mi8yODA3Njc1MjItYmZmMmRlZDgtYTdjNC00MjM3LTgwMzItYzNiNjI3MDFlOTRiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE0NTAwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ3MjM5ZDZjOTU0NTVmYzhkMGZmZmM2MjY5M2FiMWYwMTg1NTg0NTY3NWZiM2ZmNWQ4Y2M2YTVmZTQzNGVmYjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.GSpoQk6kf21XiCEAPQ2U1oepYFV6na1QD6Jbl5tDiks)
D24_S8
Depth Buffer format
D32_S8
Depth Buffer format
D16
MSAADepth Buffer format
D32
MSAAAfter : the rectangle of output depth 0.0 is shown as passing the depth test
Depth Buffer format
![image](https://private-user-images.githubusercontent.com/39392/280767871-2fdcd76b-2457-429d-b18e-9ec98630f3dd.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODU3MDcsIm5iZiI6MTczOTI4NTQwNywicGF0aCI6Ii8zOTM5Mi8yODA3Njc4NzEtMmZkY2Q3NmItMjQ1Ny00MjlkLWIxOGUtOWVjOTg2MzBmM2RkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE0NTAwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM5NThhYmI1NTEyZGFkZDlkMDBhMzQ1YzYyNTJkY2I1ZjE0NDUxZTAzYTg5NjkxNDY3MmU5NWFjYjA3MGFlZmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.256KsPRh6OkgbEdeqNe_ZRW2G28BxK2A9065ZCtkZ_w)
![image](https://private-user-images.githubusercontent.com/39392/280767942-4cb0e9e0-ce5d-4044-b77d-353ef416a5ac.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODU3MDcsIm5iZiI6MTczOTI4NTQwNywicGF0aCI6Ii8zOTM5Mi8yODA3Njc5NDItNGNiMGU5ZTAtY2U1ZC00MDQ0LWI3N2QtMzUzZWY0MTZhNWFjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE0NTAwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg2NzQ3MDQyNjI2YWM5ODExOGU5Zjg3MDRlODU4NGJmMGFiMWVkNzdkYzE4MDlkMGZlNGYwNjFiYTJkMTI1ZGMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.V9Ou3exeTezOxaJC-QqUoo97HGAxBskUHpkLwBMUEaw)
![image](https://private-user-images.githubusercontent.com/39392/280768132-fa3a86e2-2fab-4352-93ab-c4f4742850f8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODU3MDcsIm5iZiI6MTczOTI4NTQwNywicGF0aCI6Ii8zOTM5Mi8yODA3NjgxMzItZmEzYTg2ZTItMmZhYi00MzUyLTkzYWItYzRmNDc0Mjg1MGY4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE0NTAwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE2MGU5NWYzMTlkZjZiMTBlOTFmNjZkZDI5MGNjNmQ4MGEyZjQyMWQxNmEzYTc3NDRmMzM2NDhhYmVmMGIyZjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.rE4Fyt-L8k-FMCRBB1FvOMNEde4PuyDX2vUPkyJ1LQI)
![image](https://private-user-images.githubusercontent.com/39392/280768213-c4f6f80d-c4f7-4539-a75d-4c27fad7bdfa.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODU3MDcsIm5iZiI6MTczOTI4NTQwNywicGF0aCI6Ii8zOTM5Mi8yODA3NjgyMTMtYzRmNmY4MGQtYzRmNy00NTM5LWE3NWQtNGMyN2ZhZDdiZGZhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjExVDE0NTAwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE3NjZkZWIzODRlOTk2ZDEwOTI1OTE2YTVjMWY0NTZjNDBkMjMxZjg5OWFjMjIyZGQ5Y2E1ZTU2NGRmOTA5OTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.nRnqVsCv6ViMcb7Lhkhr-y_gs66xzI_-HeizoAQ-roM)
D24_S8
Depth Buffer format
D32_S8
Depth Buffer format
D16
MSAADepth Buffer format
D32
MSAA